<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<h1>JS</h1><hr>

	<script>
		var num = 556;
		var num = 11e-3;
		var num = 11e3;
		var num = 11e+3;
		// var num = 0b110; // 2进制
		// var num = 010; // 8进制
		// var num = 0xff; // 16进制
		var num = 10; // 10进制
		console.log(num);
		console.log(typeof(num));

		// Not a Number // NaN 类型 理解为不是一个数值;
		var num = NaN; // 可用于后期 进行数值判断
		console.log(num);
		console.log(typeof(num)); //但他的类型是 Number类型;

		//--------------------------------------------------
		console.log(NaN + 100); // NaN 不能与一个数值相加;
		if (NaN) {
			console.log	(true);
		}else{
			console.log	(false); // 返回 false 因为 NaN 不能与任何东西进行比较

		}
		// 显然
		if (NaN == NaN) {
			console.log(true);
		}else{
			console.log(false); // 自己本来就不是一个数值 所以 不能自己与自己比较
		}

		// 把其他值 转换成数值时,转成功成为数值,转不成功就成 NaN
		// Number() parseInt() parseFloat();
		// var a = 'hahah'; 
		// var a = '11'; 
		// var a = '11.1'; 
		var a = '';
		// var a = '11a'; 
		// var a = '11.1a'; 
		// var a = true; 
		// var a = false; 
		// var a = null; 
		// var a = undefined;
		var n = Number(a); // 可以转换除字符串,和数字后加字母,未定义类型之外的其他类型 
		// var n = parseInt(a); // 仅可以装换带以数字开头的字符串,且舍弃字母转为整型,否则就为NaN;
		// var n = parseFloat(a); 
		// 仅可以装换带以数字开头的字符串,且舍弃字母转为浮点型,否则就为NaN;
		console.log(n);

		// 总结: Number(); 可以转换除字符串之外含有意义的类型 如 true,null,''等等
		// 		 parseInt()/parseFloat(); 只能转换带有数字的 且以数字开头的数值类型和字符串;
		


		// isNaN() 判断一个值是否是NaN  逻辑概念与php中empty相似
		console.log(isNaN(3112));
        console.log(isNaN('sdhjkjfdf'));
        console.log(isNaN('66.6sss'));
        

	</script>
	
</body>
</html>